package com.itheima.reggie.controller;

import com.itheima.reggie.common.R;
import lombok.extern.slf4j.Slf4j;
import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.UUID;

/**
 * @author :XingJiaCheng
 * @date :2022-27-22-10:27
 * @description
 **/
@Slf4j
@RestController
@RequestMapping("/common")
public class CommonController {
    @Value("${reggie.path}")
    private String baseImagePath;
    @PostMapping("/upload")
    public R<String>upload(MultipartFile file){
        log.info("[文件上传,文件原名:{}]", file.getOriginalFilename());
        log.info("[文件上传,文件保存路径:{}]",baseImagePath);
        int doLastIndexOf = file.getOriginalFilename().lastIndexOf(".");
        String suffix = file.getOriginalFilename().substring(doLastIndexOf);
        String fileName = UUID.randomUUID().toString() + suffix;
        log.info("fileName:{}"+fileName);
        File SaveFile = new File(baseImagePath);
        if (!SaveFile.exists()){
            SaveFile.mkdirs();
        }

        try {
            file.transferTo(new File(SaveFile,fileName));
        } catch (IOException e) {
            e.printStackTrace();
        }
        return R.success(fileName);
    }
    @GetMapping("/download")
    public void download(String name, HttpServletResponse response){
        File savePathFile = new File(baseImagePath);
        try {
            File file = new File(savePathFile, name);
            FileInputStream fileInputStream = new FileInputStream(file);
            ServletOutputStream outputStream = response.getOutputStream();
            response.setContentType("image/jpeg");
            IOUtils.copy(fileInputStream, outputStream);
            fileInputStream.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
